package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.VO.operate.OperateFaceApplyInfoVO;
import com.itlong.cloud.POJO.VO.operate.OperateUserFaceInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      运营-人脸管理-应用管理数据操作接口。
 * <desc/>
 *
 * @createDate 2018-05-03.
 */
@Mapper
@Repository
public interface IOperateFaceApplyDao {

    /**
     * <desc>
     *      保存应用信息。
     * <desc/>
     *
     * @param params 参数
     * @return
     * @author shengen.T
     * @createDate 2018-05-03
     */
    Integer saveFaceApplyInfo(Map<String,Object> params);

    /**
     * <desc>
     *      检测APPId是否存在。
     * <desc/>
     *
     * @param  appId 百度唯一appId
     * @return
     * @author shengen.T
     * @createDate 2018-05-03
     */
    Integer checkAppIdIsExist(@Param("appId") String appId);

    /**
     * <desc>
     *      更新人脸应用。
     * <desc/>
     *
     * @param  applyName 应用名称
     * @param  appId 应用编号
     * @param  remark 备注
     * @return
     * @author shengen.T
     * @createDate 2018-05-04
     */
    Integer updateFaceApplyInfo(@Param("applyName") String applyName,@Param("remark") String remark,@Param("appId") String appId,@Param("id") Integer id);

    /**
     * <desc>
     *      检测appid是否跟项目绑定了。
     * <desc/>
     *
     * @param  appId 百度人脸库唯一Id
     * @return
     * @author shengen.T
     * @createDate 2018-05-04
     */
    Integer checkAppIdIsUse(@Param("appId") String appId);

    /**
     * <desc>
     *      删除人脸应用信息。
     * <desc/>
     *
     * @param  appId 编号
     * @return
     * @author shengen.T
     * @createDate 2018-05-04
     */
    Integer deleteFaceApplyInfo(@Param("appId") String appId,@Param("id") Integer id);

    /**
     * <desc>
     *      删除人脸应用信息(无项目时使用)。
     * <desc/>
     *
     * @param  appId 编号
     * @return
     * @author shengen.T
     * @createDate 2018-05-04
     */
    Integer deleteFaceApplyInfoForNoPorject(@Param("appId") String appId,@Param("id") Integer id);

    /**
     * <desc>
     *      获取单个应用信息。
     * <desc/>
     *
     * @param  appId
     * @return
     * @author shengen.T
     * @createDate 2018-05-04
     */
    OperateFaceApplyInfoVO getOneInfo(@Param("appId") String appId,@Param("id") Integer id);


    /**
     * <desc>
     *      分页获取人脸识别应用信息。
     * <desc/>
     *
     * @param  params
     * @return
     * @author shengen.T
     * @createDate 2018-05-07
     */
    List<OperateFaceApplyInfoVO> getPageInfo(Map<String,Object> params);

    /**
     * <desc>
     *      获取分页总记录数。
     * <desc/>
     *
     * @param params
     * @return
     * @author shengen.T
     * @createDate 2018-05-07
     */
    Integer getPageCount(Map<String,Object> params);


    /**
     * <desc>
     *      分页获取人脸信息库。
     * <desc/>
     *
     * @param  * @param null
     * @return
     * @author shengen.T
     * @createDate 2018-05-07
     */
    List<OperateUserFaceInfoVO> getFacePageInfo(Map<String,Object> params);


    /**
     * <desc>
     *      获取总记录数。
     * <desc/>
     *
     * @param  params
     * @return
     * @author shengen.T
     * @createDate 2018-05-07
     */
    Integer getFacePageCount(Map<String,Object> params);

    /**
     * <desc>
     *      根据项目ID获取单个应用信息。
     * <desc/>
     *
     * @param  projectId  项目编号
     * @return
     * @author shengen.T
     * @createDate 2018-05-04
     */
    OperateFaceApplyInfoVO getFaceByProjectId(@Param("projectId") String projectId);

    /**
     * <desc>
     *      获取指定项目人脸库信息(云电梯)。
     * <desc/>
     *
     * @param  projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018-06-08
     */
    OperateFaceApplyInfoVO getElevatorFaceByProjectId(@Param("projectId") String projectId);

}
